package mysql

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type Product struct {
	gorm.Model // 嵌入结构体 实现继承
	// 字段名首字母大写 映射到数据库为全小写 单词间用_分隔
	Code  string
	Price uint
}

func QuickStart() {
	// datasource name
	dsn := "root:root@tcp(192.168.56.101:3308)/go_db?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("fail to connect database")
	}
	// 迁移schema
	// db.AutoMigrate(&Product{})

	// 增
	// db.Create(&Product{Code: "D42", Price: 100})

	// 查询
	var product Product
	// 根据主键查询
	db.First(&product, 1)
	//fmt.Printf("product: %v\n", product)
	// 根据code查询
	//db.First(&product, "code=?", "D42")
	//fmt.Printf("product: %v\n", product)

	// 更新 将product数据的price字段更新为200
	//db.Model(&product).Update("Price", 200)
	//fmt.Printf("product: %v\n", product)
	// 更新多个字段 仅更新非零值字段
	//db.Model(&product).Updates(Product{Price: 300, Code: "H44"})
	//db.Model(&product).Updates(map[string]interface{}{"Price": 600, "Code": "X12"})

	//删除
	db.Delete(&product)
}
